package cn.larry.demo.web;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.PropertyEditorRegistrar;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.ServletRequestDataBinder;

/**
 * SimpleFormController 在Spring 4以后已经不再支持了！使用@Controller。
 * 但是，仍然木有明白本类的作用！以及，为毛final？？？
 * 有个带参构造，默认会调用这个创建实例，那么，注入的是？？？
 * 也没见到@Autowired啊。另外，打了断点，啥也木有发生！
 * 
 * @author LarryZeal
 *
 */
// 这种风格的PropertyEditor 注册能简洁代码（the implementation of initBinder(..) is just one line long!），
// 且允许通用的PropertyEditor 注册代码包含在一个类中--然后由所有需要的Controllers 共享。（这个是重点吧？？？）
@Controller
public final class RegisterUserController /* extends SimpleFormController */ {

	private final PropertyEditorRegistrar customPropertyEditorRegistrar;

	// 没调用啊
	public RegisterUserController(PropertyEditorRegistrar propertyEditorRegistrar) {
		this.customPropertyEditorRegistrar = propertyEditorRegistrar;
	}

	// 干嘛用的？？
	protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
		this.customPropertyEditorRegistrar.registerCustomEditors(binder);
	}

	// other methods to do with registering a User
}